package com.foreknow.controller;

import com.foreknow.service.impl.AdminServiceImpl;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Servlet:服务器端的应用程序（使用java来编写）
 * 作用：处理客户端请求（例如：用户所填写的数据）
 * <p>
 * 1.要想创建Servlet一定要继承HttpServlet
 * 2.需要重写doGet/doPost方法
 * 什么时候调用这两个方法：当客户端向服务器端发送的请求get，就会调用servlet中的doGet方法
 * 当客户端向服务器端发送的请求post，就会调用servlet中的doPost方法
 * <p>
 * 3.方法的参数
 * 3.1 HttpServletRequest接口：这个接口无需我们自己初始化，它会服务器自动进行初始化，接口中会提供一些常用的方法
 * 来处理一些请求的参数
 * req.getContextPath()    获取application context的路径
 * req.getParameter("username")    获取到请求参数
 * 3.2 HttpServletResponse接口：网上
 * <p>
 * 关于Servlet中的资源跳转
 * 1.请求转发：
 * 相当于客户端向服务器端发送一次请求
 * url的地址是第一次发送请求的地址
 * 请求转发只能转发站内的资源，不能转发站外的资源
 * 2.重定向：resp.sendRedirect(req.getContextPath()+"/ShowMessageServlet");
 * 相当于客户端向服务器端发送两次请求
 * url的地址是最终目标资源地址
 * 重定向可以定向任意资源（站内、站外）
 */
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

/*        out.println("<html>");
        out.println("<head>");
        ut.println("<title>Login Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("获取请求的方法是："+req.getMethod()+"<br>");
        out.println("获取application context的路径："+req.getContextPath()+"<br>");
        out.println("获取到请求的uri地址："+req.getRequestURI()+"<br>");
        out.println("获取到请求参数："+req.getParameter("username")+"<br>");
        out.println(new Date());
        out.println("</body>");
        out.println("</html>");*/
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        //获取初始化参数（局部）
        // String pageSize = config.getInitParameter("pageSize");
        //获取全局的初始化参数<content-param>
        String pageSize = config.getServletContext().getInitParameter("pageSize");
        System.out.println(pageSize);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //服务器端向客户端响应的内容的类型（MIME）
        resp.setContentType("text/html;charset=utf-8");
        //设置客户端向服务器端发送请求的字符编码集
        req.setCharacterEncoding("utf-8");
        PrintWriter out = resp.getWriter();
        //获取前端表单请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        HttpSession session = req.getSession();
        session.setAttribute("username",username);
        //out.println(username+"---"+password);
        //链接数据库需要调用Service中的方法
        AdminServiceImpl adminService = new AdminServiceImpl();
        boolean login = adminService.login(username, password);
        if (login) {
            //显示所有留言信息（转发）
            req.getRequestDispatcher("/ManagerServlet?q=list").forward(req, resp);

//            ShowMessageServlet show = new ShowMessageServlet();
//            show.doGet(req,resp);
            //out.println("登录成功");
        } else {
            out.println("登录失败");
        }
    }
}
